package com.situ.dao.role;
import java.util.List;

import com.situ.entity.might.SysMight;
import com.situ.util.Assist;
import com.situ.entity.role.SysRole;

import org.apache.ibatis.annotations.*;
/**
 * SysRole的Dao接口
 * 
 * @author 
 *
 */
@Mapper
public interface SysRoleDao {

	/**
	 * 获得SysRole数据的总行数,可以通过辅助工具Assist进行条件查询,如果没有条件则传入null
	 * 
	 * @param assist
	 * @return
	 */
	long getSysRoleRowCount(Assist assist);
	
	/**
	 * 获得SysRole数据集合,可以通过辅助工具Assist进行条件查询,如果没有条件则传入null
	 * 
	 * @param assist
	 * @return
	 */
	List<SysRole> selectSysRole(Assist assist);
	/**
	 * 通过SysRole的id获得SysRole对象
	 * 
	 * @param id
	 * @return
	 */
	SysRole selectSysRoleById(Long id);
	
	/**
	 * 获得一个SysRole对象,以参数SysRole对象中不为空的属性作为条件进行查询,返回符合条件的第一条
	 * 
	 * @param obj
	 * @return
	 */
	SysRole selectSysRoleObjSingle(SysRole obj);
	
	/**
	 * 获得一个SysRole对象,以参数SysRole对象中不为空的属性作为条件进行查询
	 * 
	 * @param obj
	 * @return
	 */
	List<SysRole> selectSysRoleByObj(SysRole obj);

	/**
	 * 插入SysRole到数据库,包括null值
	 * 
	 * @param value
	 * @return
	 */
	int insertSysRole(SysRole value);
	
	/**
	 * 插入SysRole中属性值不为null的数据到数据库
	 * 
	 * @param value
	 * @return
	 */
	int insertNotNullSysRole(SysRole value);
	
	/**
	 * 批量插入SysRole到数据库,包括null值
	 * 
	 * @param value
	 * @return
	 */
	int insertSysRoleByBatch(List<SysRole> value);
	/**
	 * 通过SysRole的id删除SysRole
	 * 
	 * @param id
	 * @return
	 */
	int deleteSysRoleById(Long id);
	
	/**
	 * 通过辅助工具Assist的条件删除SysRole
	 * 
	 * @param assist
	 * @return
	 */
	int deleteSysRoleByAssist(Assist assist);
	
	/**
	 * 通过SysRole的id更新SysRole中的数据,包括null值
	 * 
	 * @param enti
	 * @return
	 */
	int updateSysRoleById(SysRole enti);
	
	/**
	 * 通过SysRole的id更新SysRole中属性不为null的数据
	 * 
	 * @param enti
	 * @return
	 */
	int updateNotNullSysRoleById(SysRole enti);
	
	/**
	 * 通过辅助工具Assist的条件更新SysRole中的数据,包括null值
	 * 
	 * @param value
	 * @param assist
	 * @return
	 */
	int updateSysRole(@Param("enti") SysRole value, @Param("assist") Assist assist);
	
	/**
	 * 通过辅助工具Assist的条件更新SysRole中属性不为null的数据
	 * 
	 * @param value
	 * @param assist
	 * @return
	 */
	int updateNotNullSysRole(@Param("enti") SysRole value, @Param("assist") Assist assist);

	@Select("select * from sys_role")
    List<SysRole> queryAllRoles();

    List<SysRole> queryByLike(SysRole value);

    @Update("update sys_role set role_name=#{role_name},role_desc=#{role_desc},role_flag=#{role_flag} " +
            "where role_id=#{role_id}")
    int updateRole(SysRole sysRole);

    @Delete("delete from sys_role where role_id=#{role_id}")
    int deleteRole(Long roleId);

    @Insert("insert into sys_role(role_name,role_desc,role_flag) " +
            "values(#{role_name},#{role_desc},#{role_flag})")
    int addRole(SysRole sysRole);
}